package com.scholarship.modules.login.mapper;

import com.scholarship.modules.login.dto.LoginInfoDto;
import com.scholarship.modules.login.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * t_user用户表
 * @Author Z.J.H
 * @create 2021/9/5 14:22
 */
@Repository
public interface LUserMapper {

    /**
     * 添加账号密码信息
     * @param user
     * @throws Exception
     */
    int insertUser(@Param("user") User user) throws Exception;

    /**
     * 插入多条账号密码信息
     * @param userList
     * @throws Exception
     */
    int insertUserList(List<User> userList) throws Exception;

    /**
     * 插入或更新多条账号密码信息
     * @param userList
     * @return
     * @throws Exception
     */
    int insertAndUpdateUserList(List<User> userList) throws Exception;

    /**
     * 通过账号更新密码
     * @param userId
     * @param password
     * @return
     */
    int updatePasswordByUserId(@Param("userId") String userId, @Param("password") String password);

    /**
     * 通过userId更新账号状态
     * @param userId
     * @param state
     * @return
     */
    int updateStateByUserId(@Param("userId") String userId, @Param("state") Integer state);

    /**
     * 删除账号
     * @param userId
     */
    void deleteUserByUserId(String userId);

    /**
     * 根据用户id查询用户信息
     * @param userId
     * @return
     */
    User getUserByUserId(String userId);

    /**
     * 通过邮箱查询用户信息
     * @param baseEmail 加密后邮件
     * @return
     */
    User getUserByEmail(String baseEmail);

    /**
     * 根据用户id查询用户登录实体类信息
     * @param id
     * @return
     */
    LoginInfoDto getLoginInfoDtoByUserId(String id);

    /**
     * 显示用户列表
     * @return
     * @throws Exception
     */
    List<User> listUser() throws Exception;
}
